home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DTP / DTP_TEX / H219.ZIP / DVIPSSRC.ZIP / dvips / vms / vmscli.c < prev   
C/C++ Source or Header  |  1993-07-12  |  12KB  |  380 lines

  1. #include ssdef.h
  2. /* this code is included into dvips.c; don't compile it separately. */
  3. int vmscli()
  4.     {long int k,scnt;
  5.     int length,status,maxdrift,jext;
  6.     float offset,conversion;
  7.     char *u;
  8.     static char dummy[100],prtr[20];
  9.     static $DESCRIPTOR(qual1,"copies");
  10.     static $DESCRIPTOR(qual2,"debug");
  11.     static $DESCRIPTOR(qual3,"maxdrift");
  12.     static $DESCRIPTOR(qual4,"filter");
  13.     static $DESCRIPTOR(qual5,"last");
  14.     static $DESCRIPTOR(qual6,"manual");
  15.     static $DESCRIPTOR(qual7,"number");
  16.     static $DESCRIPTOR(qual8,"output");
  17.     static $DESCRIPTOR(qual9,"start");
  18.     static $DESCRIPTOR(qual10,"quiet");
  19.     static $DESCRIPTOR(qual11,"reverse");
  20.     static $DESCRIPTOR(qual12,"sav_res");
  21.     static $DESCRIPTOR(qual13,"mode");
  22.     static $DESCRIPTOR(qual14,"magnification");
  23.     static $DESCRIPTOR(qual15,"collate");
  24.     static $DESCRIPTOR(qual16,"dpi");
  25.     static $DESCRIPTOR(qual17,"ctrld");
  26.     static $DESCRIPTOR(qual18,"inc_com");
  27.     static $DESCRIPTOR(qual19,"comment");
  28.     static $DESCRIPTOR(qual20,"vm_save");
  29.     static $DESCRIPTOR(qual21,"h_dpi");
  30.     static $DESCRIPTOR(qual22,"v_dpi");
  31.     static $DESCRIPTOR(qual23,"compress");
  32.     static $DESCRIPTOR(qual24,"printer");
  33.     static $DESCRIPTOR(qual25,"header");
  34.     static $DESCRIPTOR(qual26,"absolute");
  35.     static $DESCRIPTOR(qual27,"epsf");
  36.     static $DESCRIPTOR(qual28,"prescan");
  37.     static $DESCRIPTOR(qual29,"pagecopies");
  38.     static $DESCRIPTOR(qual30,"separate");
  39.     static $DESCRIPTOR(qual31,"cropmarks");
  40.     static $DESCRIPTOR(qual32,"sec_size");
  41.     static $DESCRIPTOR(qual33,"help");
  42.     static $DESCRIPTOR(qual34,"makefont");
  43.     static $DESCRIPTOR(qual35,"psize");
  44.     static $DESCRIPTOR(qual36,"poffset");
  45.     static $DESCRIPTOR(dumdum,dummy);
  46.     static $DESCRIPTOR(dvi_file,"dvifile");
  47.     static $DESCRIPTOR(input_file,infnme);
  48.     scnt=0;
  49.     status = cli$present(&dvi_file);
  50.  
  51.     if(status == CLI$_PRESENT)
  52.     {status = cli$get_value(&dvi_file,&input_file,&jext);
  53.       length=0;
  54.       for(k=0;k<252;k++)
  55.       { if(infnme[k] == ':' || infnme[k] == ']')
  56.           scnt=k+1;
  57.       }
  58.       for(k=scnt;k<252;k++)
  59.     {if(infnme[k]=='.')
  60.       {length=k;
  61.        jext=k;
  62.        }
  63.      else
  64.       {if(infnme[k]=='/' || infnme[k]==' ' || infnme[k]=='\0')
  65.          infnme[k]='\0';
  66.        }
  67.     }
  68.     if(length==0)
  69.      {jext= strlen(infnme);
  70.      strcat(infnme,".DVI");}
  71.  
  72.     iname = &infnme[0] ;
  73.     length = 0;         /* Initialize length...VAX C bug? */
  74.  
  75.    }
  76.     status = cli$present(&qual1);
  77.  
  78.     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
  79.         {status = cli$get_value(&qual1,&dumdum,&length);
  80.  
  81.         if(sscanf(&dummy[0],"%d",&numcopies) == 0)
  82.          error("!Bad copies option");
  83.         }
  84. #ifdef DEBUG
  85.     status = cli$present(&qual2);
  86.  
  87.     if(status == CLI$_PRESENT)
  88.         {
  89.         status = cli$get_value(&qual2,&dumdum,&length);
  90.  
  91.         if(sscanf(&dummy[0],"%d",&debug_flag) == 0)
  92.          error("!Bad debug option");
  93.         }
  94. #else
  95.          error("not compiled in debug mode");
  96. #endif
  97.     status = cli$present(&qual3);
  98.  
  99.     if(status == CLI$_PRESENT)
  100.         {status = cli$get_value(&qual3,&dumdum,&length);
  101.  
  102.         if(sscanf(&dummy[0],"%d",&maxdrift) == 0 ||maxdrift <0)
  103.             error("bad maxdrift option");
  104.         vmaxdrift=maxdrift;
  105.         }
  106.  
  107.  
  108.     status = cli$present(&qual5);
  109.  
  110.     if(status == CLI$_PRESENT)
  111.         {status = cli$get_value(&qual5,&dumdum,&length);
  112.  
  113. #ifdef SHORTINT
  114.             switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) {
  115. #else    /* ~SHORTINT */
  116.             switch(sscanf(&dummy[0], "%ld.%ld", &lastpage, &lastseq)) {
  117. #endif    /* ~SHORTINT */
  118. case 1:        lastseq = 0 ;
  119. case 2:        break ;
  120. default:
  121.                error("! Bad last page option.") ;
  122.             }
  123.             notlast = 1 ;
  124.         }
  125.     status = cli$present(&qual6);
  126.  
  127.     if(status == CLI$_PRESENT)
  128.      manualfeed=1;
  129.  
  130.     status = cli$present(&qual7);
  131.      if(status == CLI$_PRESENT)
  132.      {status = cli$get_value(&qual7,&dumdum,&length);
  133. #ifdef SHORTINT
  134.             if (sscanf(&dummy[0], "%ld", &maxpages)==0)
  135. #else    /* ~SHORTINT */
  136.             if (sscanf(&dummy[0], "%d", &maxpages)==0)
  137. #endif    /* ~SHORTINT */
  138.                error("! Bad number of pages option.") ;
  139.       }
  140.  
  141.     status = cli$present(&qual8);
  142.      if(status == CLI$_PRESENT)
  143.      {status = cli$get_value(&qual8,&dumdum,&length);
  144.      sscanf(&dummy[0],"%s",ofnme);
  145.      }
  146.      else
  147.      {for(k=scnt;k<jext;k++)ofnme[k-scnt]=infnme[k];
  148.         strcat(ofnme,".PS");}
  149.      oname = &ofnme[0] ;
  150.  
  151.     status = cli$present(&qual4);
  152.  
  153.     if(status == CLI$_PRESENT)
  154.         {oname="";
  155.          noenv=(1==1);
  156.         }
  157.  
  158.     status = cli$present(&qual9);
  159.      if(status == CLI$_PRESENT)
  160.      {status = cli$get_value(&qual9,&dumdum,&length);
  161. #ifdef SHORTINT
  162.             switch(sscanf(&dummy[0], "%ld.%ld", &firstpage, &firstseq)) {
  163. #else    /* ~SHORTINT */
  164.             switch(sscanf(&dummy[0], "%ld.%ld", &firstpage, &firstseq)) {
  165. #endif    /* ~SHORTINT */
  166. case 1:        firstseq = 0 ;
  167. case 2:        break ;
  168. default:
  169.                error("! Bad first page option.") ;
  170.             }
  171.             notfirst = 1 ;
  172.      }
  173.  
  174.     status = cli$present(&qual10);
  175.  
  176.     if(status == CLI$_PRESENT)
  177.      quiet=(1==1);
  178.  
  179.     status = cli$present(&qual11);
  180.  
  181.     if(status == CLI$_PRESENT)
  182.      reverse=1;
  183.  
  184.     status = cli$present(&qual12);
  185.  
  186.     if(status == CLI$_PRESENT)
  187.      safetyenclose=1;
  188.  
  189.     status = cli$present(&qual13);
  190.      if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
  191.      {status = cli$get_value(&qual13,&dumdum,&length);
  192.      sscanf(&dummy[0],"%s",pap);
  193.      if (strcmp(&pap[0], "landscape") == 0)
  194.          { if (hpapersize || vpapersize)
  195.               error( "both landscape and papersize specified; ignoring landscape") ;
  196.            else
  197.               landscape = 1 ;
  198.              /* The following lines have been added by G.Bonacci */
  199.              if ((status=cli$get_value(&qual13,&dumdum,&length))==1)
  200.              {
  201.                  sscanf(&dummy[0],"%s",pap);
  202.                  paperfmt = &pap[0] ;
  203.              }
  204.              /* end G.Bonacci 20.3.92 */
  205.          }
  206.          else
  207.          paperfmt = &pap[0] ;
  208.      }
  209.  
  210.     status = cli$present(&qual14);
  211.  
  212.     if(status == CLI$_PRESENT)
  213.         {status = cli$get_value(&qual14,&dumdum,&length);
  214.  
  215.         if(sscanf(&dummy[0],"%d",&mag) == 0 || mag < 10 || mag >100000)
  216.          error("!Bad magnification parameter.");
  217.          overridemag=1;
  218.         }
  219.     status = cli$present(&qual15);
  220.  
  221.     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
  222.         {status = cli$get_value(&qual15,&dumdum,&length);
  223.  
  224.         if(sscanf(&dummy[0],"%d",&collatedcopies) == 0)
  225.          error("!Bad number of collated copies");
  226.         }
  227.     status = cli$present(&qual16);
  228.  
  229.     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
  230.         {status = cli$get_value(&qual16,&dumdum,&length);
  231.  
  232.         if(sscanf(&dummy[0],"%d",&actualdpi) == 0 ||
  233.            actualdpi < 10 || actualdpi >10000)
  234.      error("!Bad dpi parameter.");
  235.        vactualdpi=actualdpi;
  236.         }
  237.  
  238.     status = cli$present(&qual17);
  239.  
  240.     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED)
  241.     sendcontrolD =1;
  242.  
  243.     status = cli$present(&qual18);
  244.  
  245.     if(status == CLI$_NEGATED)
  246.      removecomments =1;
  247.  
  248.     status = cli$present(&qual19);
  249.  
  250.     if(status == CLI$_NEGATED)
  251.     disablecomments = 1;
  252.  
  253.     status = cli$present(&qual20);
  254.  
  255.     if(status == CLI$_PRESENT)
  256.     nosmallchars=1;
  257.  
  258.     status = cli$present(&qual21);
  259.  
  260.     if(status == CLI$_PRESENT)
  261.         {status = cli$get_value(&qual21,&dumdum,&length);
  262.  
  263.         if(sscanf(&dummy[0],"%d",&actualdpi) == 0 ||
  264.            actualdpi < 10 || actualdpi >10000)
  265.          error("!Bad dpi parameter in X.");
  266.         }
  267.  
  268.     status = cli$present(&qual22);
  269.  
  270.     if(status == CLI$_PRESENT)
  271.         {status = cli$get_value(&qual22,&dumdum,&length);
  272.  
  273.         if(sscanf(&dummy[0],"%d",&vactualdpi) == 0 ||
  274.            vactualdpi < 10 || vactualdpi >10000)
  275.          error("!Bad dpi parameter in Y.");
  276.         }
  277.  
  278.     status = cli$present(&qual23);
  279.  
  280.     if(status == CLI$_PRESENT)
  281.     compressed=1;
  282.  
  283.     status = cli$present(&qual24);
  284.      if(status == CLI$_PRESENT)
  285.      {status = cli$get_value(&qual24,&dumdum,&length);
  286.      sscanf(&dummy[0],"%s",prtr);
  287.      u = &dummy[0] ;
  288.      strcpy(u,"config.");
  289.      strcat(u,&prtr[0]);
  290.      getdefaults("");
  291.      noenv=1;
  292.      getdefaults(u);
  293.      }
  294.  
  295.     status = cli$present(&qual25);
  296.      if(status == CLI$_PRESENT) {
  297.        while (status != SS$_NORMAL) {
  298.        status = cli$get_value(&qual25,&dumdum,&length);
  299.        dummy[length] = '\0';
  300.        if (strcmp(dummy, "-") == 0)
  301.           headers_off = 1;
  302.        else
  303.           (void)add_header(dummy) ;
  304.        }
  305.      }
  306.      else {
  307.        if(status == CLI$_NEGATED)
  308.           headers_off = 1;
  309.      }
  310.  
  311.     status = cli$present(&qual26);
  312.     if(status == CLI$_PRESENT) abspage = 1;
  313.  
  314.     status = cli$present(&qual27);
  315.     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) tryepsf = 1;
  316.  
  317.     status = cli$present(&qual28);
  318.     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) dopprescan = 1;
  319.  
  320.     status = cli$present(&qual29);
  321.  
  322.     if(status == CLI$_PRESENT | status == CLI$_DEFAULTED)
  323.         {status = cli$get_value(&qual29,&dumdum,&length);
  324.  
  325.         if(sscanf(&dummy[0],"%d",&pagecopies) == 0)
  326.          error("!Bad number of page copies option /PAGECOPIES");
  327.         if (pagecopies < 1 || pagecopies > 1000)
  328.                error("! can only print one to a thousand page copies") ;
  329.         }
  330.  
  331.     status = cli$present(&qual30);
  332.     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) sepfiles = 1;
  333.  
  334.     status = cli$present(&qual31);
  335.     if(status == CLI$_PRESENT | status==CLI$_DEFAULTED) cropmarks = 1;
  336.  
  337.     status = cli$present(&qual32);
  338.      if(status == CLI$_PRESENT)
  339.      {status = cli$get_value(&qual32,&dumdum,&length);
  340. #ifdef SHORTINT
  341.             if (sscanf(&dummy[0], "%ld", &maxsecsize)==0)
  342. #else    /* ~SHORTINT */
  343.             if (sscanf(&dummy[0], "%d", &maxsecsize)==0)
  344. #endif    /* ~SHORTINT */
  345.                error("! Bad section size arg (/SEC_SIZE).") ;
  346.      }
  347.  
  348.     status = cli$present(&qual33);
  349.      if(status == CLI$_PRESENT)
  350.      {  (void)fprintf(stderr, banner) ;
  351.         help() ;
  352.      }
  353.  
  354.     status = cli$present(&qual34);
  355.     if(status == CLI$_NEGATED) dontmakefont = 1;
  356. /*-----------------------------------------------------------------------
  357.  * Currently one uses /PSIZE="5mm,10mm" This way CASE is preserved
  358.  * Should I convert the PSIZE to allow a LIST => /PSIZE=(5mm,10mm) and
  359.  * convert the case back to lowercase in here.
  360.  *-----------------------------------------------------------------------*/
  361.     status = cli$present(&qual35);
  362.      if(status == CLI$_PRESENT) {
  363.        status = cli$get_value(&qual35,&dumdum,&length);
  364.        dummy[length] = '\0';
  365.        handlepapersize(&dummy[0], &hpapersize, &vpapersize) ;
  366.        if (landscape) {
  367.           error("both landscape and papersize specified; ignoring landscape") ;
  368.           landscape = 0 ;
  369.        }
  370.      }
  371.  
  372.     status = cli$present(&qual36);
  373.      if(status == CLI$_PRESENT) {
  374.        status = cli$get_value(&qual36,&dumdum,&length);
  375.        dummy[length] = '\0';
  376.        handlepapersize(&dummy[0], &hoff, &voff) ;
  377.      }
  378.  
  379. }
  380.